'''urllib_代理池的使用.py
为什么要使用代理?
    让服务器以为不是同一个客户端在请求
    防止我们的真实地址被泄露，防止被追究

理解正向代理和反向代理的区别?
    正向代理：对于浏览器知道服务器的真实地址，例如VPN
    反向代理：浏览器不知道服务器的真实地址，例如nginx
详细讲解：
    正向代理是客户端与正向代理客户端在同一局域网，客户端发出请求，正向代理 替代客户端向服务器发出请求。服务器不知道谁是真正的客户端，
    正向代理隐藏了真实的请求客户端。

反向代理：
    服务器与反向代理在同一个局域网，客服端发出请求，反向代理接收请求 ，反向代理服务器会把我们的请求分转发到真实提供服务的
    各台服务器Nginx就是性能非常好的反向代理服务器，用来做负载均衡。

免费代理ip网址：https://www.kuaidaili.com/free/inha/1/
'''

import random
import urllib.request

# 定义代理池
proxies_pool = [
    {'http': '27.42.168.46:55481'},
    {'http': '123.169.39.212:9999'},
    {'http': '182.139.111.107:9000'},
    {'http': '171.92.20.8:9000'},
    {'http': '113.121.36.199:9999'},
    {'http': '61.216.185.88:60808'},
    {'http': '182.34.102.50:9999'},
    {'http': '183.236.232.160:8080'},
    {'http': '116.9.163.205:58080'},
    {'http': '210.5.10.87:53281'},
    {'http': '117.114.149.66:55443'},
    {'http': '114.233.70.231:9000'},
    {'http': '61.216.156.222:60808'},
    {'http': '112.14.47.6:52024'},
    {'http': '61.164.39.68:53281'}
]
# 随机从代理池中获取代理ip
proxie = random.choice(proxies_pool)
print(proxie)

# 获取访问的ip网址
url = 'http://www.whatismyip.com.tw/'
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36 Edg/112.0.1722.39'
}

# 定义request
request = urllib.request.Request(url=url, headers=headers)

# 1.定义handler
handler = urllib.request.ProxyHandler(proxies=proxie)
# 2.定义opener
opener = urllib.request.build_opener(handler)
# 3.使用open
response = opener.open(request)

# 获取数据
content = response.read().decode('utf-8')
print(content)

